Для управления устройствами домашней автоматизации с мобильного телефона обычно ничего дополнительно не требуется - вы просто открываете в смартфоне веб-приложение (которое есть у любого контроллера) и используете его.

Однако, установка и настройка контроллера, например, Home Assistant, может оказаться сложной задачей и лишней тратой времени. Для некоторых ситуаций вполне достаточно использовать мобильный телефон и не городить инфраструктуру "умного дома". Например, изредка снимать какие-то показания, поиграть с автоматическим поливом или реализовать возможность дистанционного управления в отсутствии WiFi-сети.

Вы можете найти с десяток приложений для мобильного телефона, которые умеют взаимодействовать с BLE-модулями и тем самым принимать данные с микроконтроллера и передавать команды на него. Наиболее удобными и подходящими из них являются:

  • Blynk
  • RemoteXY

Как это работает?

Вы устанавливаете на смартфоне приложение, которое умеет подключаться к BLE-модулям и считывать/передавать данные. BLE-модули подключены к микроконтроллеру, в котором исполняется специальная программа, принимающая и понимающая команды от мобильного приложения. У обоих Blynk и RemoteXY разработаны библиотеки для Ardunio, которые выполняют (и скрывают от нас) всю черную работу. Мы как конечные пользователи лишь заполняем переменные или считываем их значения, а библиотеки передают эту информацию в мобильное приложение, используя возможности BLE-модулей.

Вообще, спецификация BLE не предназначена для передачи команд или потока данных, для этого есть другие спецификации (например, A2DP, используемая для передачи потокового аудио в обычном Bluetooth). Чтобы не усложнять жизнь разработчикам устройств, производители BLE-модулей используют дополнительные сервисы (в терминах GATT), через которые можно передавать AT-команды или любые другие двоичные данные. Именно эту особенность используют приложения для передачи данных с микроконтроллера в телефон и обратно. Поскольку эти сервисы специфичны для каждого производителя BLE-модуля, то мобильные приложения могут просто не уметь с ними работать.

Blynk и RemoteXY поддерживают работу с BLE HM-10. Некоторые аналоги, например, JDY-8, реализуют те же сервисы и вполне пригодны для работы вместе с этими мобильными приложениями.

RemoteXY

Создание простого мобильного приложения в этом сервисе занимает всего пару минут. Вы набрасываете кнопки и индикаторы. Каждой кнопке или индикатору будет соответствовать переменная в программе для микроконтроллера. Кнопки затем можно будет нажимать в мобильном приложении, а индикаторы будут отображать данные, которые вы туда запишете. В качестве соединения укажите Bluetooth и модуль HM-10.

Получаете исходный код для Arduino, устанавливаете библиотеку RemoteXY как написано в инструкции и загружаете полученный код в микроконтроллер. Этот код пока ничего не умеет. В соответствии с вашей задачей, вам необходимо задавать значения переменных или считывать их, чтобы реализовать нужную логику. Доработайте программу и загрузите ее в микроконтроллер. Откройте приложение RemoteXY и установите соединение с BLE-модулем. Теперь ваше приложение готово к использованию.